﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Cesave.DistributedServices.PermisosModule.WindowsHost.Views.Catalogs.Estados;
using System.Globalization;
using Cesave.DistributedServices.PermisosModule.WindowsHost.Resources;
using Cesave.DistributedServices.PermisosModule.WindowsHost.ViewModelBase;
using Cesave.Domain.PermisosModule.Entities;

namespace Cesave.DistributedServices.PermisosModule.WindowsHost.ViewModels.Catalogs.Estados
{
	/// <summary>
	/// 
	/// </summary>
	public partial class EstadosViewModel
		: ObservableObject
	{
		#region Private properties

		/// <summary>
		/// 
		/// </summary>
		private EstadosView _estadosView;

		#endregion

		#region Public properties
		#endregion

		#region Constructor

		/// <summary>
		/// 
		/// </summary>
		/// <param name="estadosView"></param>
		public EstadosViewModel(EstadosView estadosView)
		{
			if (estadosView == null)
				throw new ArgumentNullException("estadosView");
			_estadosView = estadosView;
			WireUpEvents();
			InitModels();
		}

		#endregion

		#region Event methods

		/// <summary>
		/// 
		/// </summary>
		private void WireUpEvents()
		{
			PropertyChanged += OnPropertyChanged;
			_estadosView.Load += LoadView;
			_estadosView.closeButton.Click += (sender, e) =>
			{
				_estadosView.Close();
			};
			_estadosView.saveButton.Click += SaveEstado;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void LoadView(object sender, EventArgs e)
		{
			_estadosView.Text = string.Format(
				CultureInfo.InvariantCulture,
				WindowTitles.EstadosWindowTitle
			);
		}

		#endregion

		#region Private methods

		/// <summary>
		/// 
		/// </summary>
		private void InitModels()
		{
			LoadEstados();
		}

		/// <summary>
		/// 
		/// </summary>
		private void StartWaiting()
		{
			_estadosView.WaitingBar.StartWaiting();
			_estadosView.estadoListBox.Enabled = _estadosView.saveButton.Enabled = _estadosView.closeButton.Enabled = false;
		}

		/// <summary>
		/// 
		/// </summary>
		private void EndWaiting()
		{
			_estadosView.WaitingBar.EndWaiting();
			_estadosView.estadoListBox.Enabled = _estadosView.saveButton.Enabled = _estadosView.closeButton.Enabled = true;
		}

		#endregion
	}
}
